# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/8/8
# @File : （step2）D. Children Holiday（CF）.py
# https://codeforces.com/edu/course/2/lesson/6/2/practice/contest/283932/problem/D

def bi_com(t, z, y, mid):  # 求在当前时间内，某个助手最多能吹多少个气球，用二分。
    l = 0
    r = mid // t + 10
    while (l + 1 < r):
        x = (l + r) // 2

        if (x % z == 0):
            a = x // z - 1
        else:
            a = x // z

        if ((x * t + a * y) <= mid):
            l = x
        else:
            r = x
    return l

def bi_com_1(t, z, y, mid):  # 求在当前时间内，某个助手最多能吹多少个气球，用O(1)复杂度的公式。
    val = t*z+y# 以这个为单位，吹z个气球的时间加上休息时间y。
    return mid // val * z + min(mid%val//t,z)


def check(mid):  # 求在当前时间内，所有的助手一共能吹多少个气球。
    cnt = 0
    for t1, z1, y1 in char:
        cnt += bi_com(t1, z1, y1, mid)
    return cnt


def bi():
    l = -1
    r = 10 ** 9 + 1
    while (l + 1 < r):
        mid = (l + r) // 2
        if (check(mid) >= m):  # 右二分，找最小的时间。找满足能吹够m个气球的最小时间
            r = mid
        else:
            l = mid
    return r


if __name__ == "__main__":
    """
    二分判定答案。D. Children Holiday
    """
    m, n = map(int, input().split())
    char = []
    for _ in range(n):
        t, z, y = map(int, input().split())
        char.append((t, z, y))
    t = bi()
    print(t)
    cnt = 0
    """
    输出每个人的吹的气球数，注意前面某个吹得多的话，如果吹到了m个，后面的都不用吹。
    题目要求恰好是吹m个气球，但是这个最小时间的吹出来的数不一定就是m个，它只是一个不小于m的最小值，
    因再小一个单位的时间吹出来的气球数比m小，但是当前这个时间吹出来的气球数又比m大，
    所以它只是一个不小于m的最小值，不一定等于m。
    """
    for a, b, c in char:
        tmp = bi_com(a, b, c, t)
        if (cnt >= m):
            print(0, end=' ')
        else:
            if (tmp >= m - cnt):
                print(m - cnt, end=' ')
            else:
                print(tmp, end=' ')
        cnt += tmp